package com.quectel.core.module.scheduling.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author zhangheng
 * @email nolan.zhang@quectel.com
 * @date 2023/07/05 13:24
 */
@Data
@Schema
public class SchedulingTimeConfigDto implements Serializable {

    /**
    * id
    */
    @Schema(description = "id")
    private Long id;

    /**
    * 租户id
    */
    @Schema(description = "租户id")
    private Long tenantId;

    /**
    * 小区
    */
    @Schema(description = "小区")
    @NotNull
    private Long villageId;

    /**
    * 时间段名称
    */
    @Schema(description = "时间段名称")
    @NotEmpty
    @Length(max = 80)
    private String name;

    /**
    * 最早开始签到时间
    */
    @Schema(description = "最早开始签到时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String startSignTime;

    /**
    * 上班时间
    */
    @Schema(description = "上班时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String workTime;

    /**
    * 迟到时间
    */
    @Schema(description = "迟到时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String lateTime;

    /**
    * 记上班缺卡时间
    */
    @Schema(description = "记上班缺卡时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String missingWorkTime;

    /**
     * 休息开始时间 [12:00:00-13:00:00]
     */
    @Schema(description = "休息时间段 [12:00:00-13:00:00]")
    private String restTimeJson;

    /**
    * 记下班缺卡时间
    */
    @Schema(description = "记下班缺卡时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String missingClosingTime;

    /**
    * 记早退时间
    */
    @Schema(description = "记早退时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String earlyLeaveTime;

    /**
    * 下班时间
    */
    @Schema(description = "下班时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String closingTime;

    /**
    * 最晚签退时间
    */
    @Schema(description = "最晚签退时间")
    @NotEmpty
    @Length(min = 5,max = 8)
    private String endSignTime;

    /**
    * 状态 0禁用 1启用
    */
    @Schema(description = "状态 0禁用 1启用")
    @NotNull
    private Byte status;

    /**
    * 创建人
    */
    @Schema(description = "创建人")
    private String creator;

    /**
    * 创建时间
    */
    @Schema(description = "创建时间")
    private Date createTime;

    /**
    * 修改人
    */
    @Schema(description = "修改人")
    private String editor;

    /**
     * 修改时间
     */
    @Schema(description = "修改时间")
    private Date editTime;

    /************非数据库字段 start ************/

    @Schema(description = "小区名称")
    private String villageName;
    /************非数据库字段 end **************/


}
